iT邦幫忙

2025 iThome 鐵人賽

DAY 3
0
Software Development

30天收斂後端開發心法系列 第 3

30天收斂後端開發心法 - (3) Route 與 Middleware

  • 分享至 

  • xImage
  •  

在 Laravel 這類現代化的 PHP Framework 中,Routing 與 Middleware 是構建應用的基礎架構之一。理解這兩者如何協作,不僅能讓你開發出更可維護的系統,也能在專案需求增加時有效擴展功能。

什麼是路由(Routing)

路由的角色:

路由的主要工作就是根據請求 URL 找到對應的 Controller 上。

基本語法:

Route::get('/users', [UserController::class, 'index']);
Route::post('/login', function () {
    // 執行登入邏輯
});

常見的路由方法:

通常會依照 RESTful API 的設計原則來定義路由對應的動作:

  • Route::get():對應 GET 請求
  • Route::post():對應 POST 請求
  • Route::put() / Route::patch():用於更新資源
  • Route::delete():刪除資源
  • Route::group():路由群組,搭配 middleware 使用非常方便

什麼是中介層(Middleware)

Middleware 的角色:

Middleware 是位於 Route 與 Controller 之間,可以作為檢查請求的角色,例如:
* 權限驗證(如:JWT、API Token)
* 跨站請求保護(CSRF)
* 請求格式統一(如統整成 JSON)

建立 Middleware:

php artisan make:middleware CheckAdmin

註冊 Middleware:

全域註冊(app/Http/Kernel.php)

protected $routeMiddleware = [
    'check.admin' => \App\Http\Middleware\CheckAdmin::class,
];

指定路由使用:

Route::middleware(['auth', 'check.admin'])->group(function () {
    Route::get('/admin/dashboard', [DashboardController::class, 'index']);
});

路由與 Middleware 的協作關係

  • 路由先定義好哪些 URL 要怎麼處理
  • Middleware 提供進一步的保護或過濾
  • 控制器處理業務邏輯後回應
    例如,某個 /admin 路徑下的資源,只允許管理員進入:
Route::middleware(['auth', 'check.admin'])->prefix('admin')->group(function () {
    Route::get('/users', [AdminUserController::class, 'index']);
});

這樣設計的好處:

  • 分工明確,驗證與授權不寫在 Controller 裡
  • 提高重用性:Middleware 可套用在不同的路由
  • 清晰的流程控制:容易維護與擴充

上一篇
30天收斂後端開發心法 - (2) Laravel 生命周期
下一篇
30天收斂後端開發心法 - (4) Service Provider
系列文
30天收斂後端開發心法30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言